<?php
/**
 * @class		ContactsController
 * @ingroup		contacts_controllers
 * @brief		Controller của đối tượng Contact, thuộc về quản trị, bao gồm các phương thức điều khiển các luồng xử lý để quản lý đối tượng contact
 * @author		BaoNN
 * @version		1.0
 * @date		2009-2010
 */

App::import('Model', 'contacts.Contact');
class ContactsController extends AppController {
	/**
	 * @var $name
	 * @brief Tên của Controller
	 */
	var $name = 'Contacts';
	var $view = 'Theme';
	var $theme = 'qat';
	var $layout = 'news';
	
	/**
	 * @var $uses
	 * @brief Tên của Model
	 */
	var $uses = array('Contact');
	
	var $components = array('contacts.Captcha', 'RequestHandler', 'Email');
	var $helpers = array('text','contacts.Captcha');
	var $capchar_cache_name = 'contact_captcha';
	
	function beforeFilter() {
		parent::beforeFilter();
		
		$this->configs = $this->Contact->loadConfig();
		// Set Facility as default root for category
		$this->params['named']['root'] = '';

		
		if ($this->params['action'] == 'add') {
			// Cache captcha
			$loaded = Configure::load($this->capchar_cache_name);
			
			if ($loaded !== false) {
				$config = Configure::read('Captcha');
				$this->configs['Captcha'] = $config;
				
				// Trong trường hợp hành động là gửi thông tin liên hệ
				if ($this->RequestHandler->isPost()) {
					if (date("Y-m-d") == date("Y-m-d", $this->configs['Captcha']['modified'])) {
						$this->configs['Captcha']['count']++;
						if ($this->configs['Captcha']['count'] > 5) {
							$this->configs['Captcha']['isActive'] = true;
						}
					} else {
						$this->configs['Captcha']['count'] = 1;
						$this->configs['Captcha']['isActive'] = false;
						$this->configs['Captcha']['modified'] = time();
					}
					
					$oldDebug = Configure::read('debug');
				
					// Đảm bảo cache được lưu
					Configure::write('debug',1);
					Configure::delete('Captcha');
					// Lưu vào cache
					Configure::store('Captcha', $this->capchar_cache_name, $this->configs['Captcha']);
					Configure::write('debug', $oldDebug);
				} else {
					if (date("Y-m-d") != date("Y-m-d", $this->configs['Captcha']['modified'])) {
						$this->configs['Captcha']['count'] = 0;
						$this->configs['Captcha']['isActive'] = false;
						$this->configs['Captcha']['modified'] = time();
						
						$oldDebug = Configure::read('debug');
				
						// Đảm bảo cache được lưu
						Configure::write('debug',1);
						Configure::delete('Captcha');
						// Lưu vào cache
						Configure::store('Captcha', $this->capchar_cache_name, $this->configs['Captcha']);
						Configure::write('debug', $oldDebug);
					}
				}
			} else {
				$this->configs['Captcha'] = array(
					'count'		=>	0,
					'modified'	=>	time(),
					'isActive'	=>	false
				);

				$oldDebug = Configure::read('debug');
				
				// Đảm bảo cache được lưu
				Configure::write('debug',1);
				Configure::delete('Captcha');
				// Lưu vào cache
				Configure::store('Captcha', $this->capchar_cache_name, $this->configs['Captcha']);
				Configure::write('debug', $oldDebug);
			}
		}
		
		$this->set('configs', $this->configs);
		//debug($this->configs);exit;
		
	}
	
	/**
	 * Phương thức add() dùng để thêm vào thông tin liên hệ từ phía người dùng
	 * 
	 * @return Nếu: --thành công thì điều hướng đến trang cảm ơn
	 * 				--không thành công thì thông báo lỗi và yêu cầu nhập lại
	 */
	function add() {
		/**
		 * Nếu dữ liệu được gởi lên tiến hành kiểm tra đầu vào
		 **/
		if(!empty($this->data)) {
			$this->Contact->set($this->data);
			/**
			 * Tiến hành kiểm tra tính hợp lệ được khai báo ràng buộc trong Model
			 **/
			if($this->Contact->validates()) {
			//	if ($this->Captcha->protect(false, 'Contact') || !$this->configs['Captcha']['isActive']) {
					/**
					 * Nếu : --lưu thành công dữ liệu thì hiển thị thông báo và điều hướng về trang index
					 * 		 --không thành công thì thông báo lỗi và yêu cầu thực hiện lại thao tác
					 */
					if($this->Contact->save($this->data)) {
						// Email
						$receiver = $this->configs['Contact']['receiver'];
						$subject = "{$_SERVER['HTTP_HOST']} - Có thông tin liên lạc mới";
						$message = "Bạn có thể xem các thông tin liên lạc khác bằng cách vào đây:<br />
							<a href=\"http://{$_SERVER['HTTP_HOST']}".$this->webroot."contacts/manage_contacts\">http://{$_SERVER['HTTP_HOST']}".$this->webroot."contacts/manage_contacts</a><strong><br />
							<br />
							Người gửi</strong>: {$this->data['Contact']['name']}<br />
							<strong>Email</strong>: {$this->data['Contact']['email']}<br />
							<strong>Tiêu đề</strong>: {$this->data['Contact']['title']}<br />
							<strong>Nội dung</strong>:<br />
							{$this->data['Contact']['content']}";
						
						$this->Email->sendAs = 'html';
						$this->Email->headers = array(
							'From'	=>	$this->configs['Contact']['from'],
							'Reply-To'	=>	$this->configs['Contact']['reply_to'],
						);
						$this->Email->to = $receiver;
						$this->Email->subject = $subject;
						$this->Email->send($message);
						
						// redirect
						$this->redirect(array('plugin' => 'contacts', 'controller' => 'contacts', 'action' => 'thanks'));
					} else{
						$this->Session->setFlash(__('Không thể lưu thông tin liên lạc. Bạn vui lòng thử lại!'), "flash_error");
					}
				//} else {
				//	$this->Contact->invalidate('captcha', __("Mã bảo mật không hợp lệ", true));
				//}
			}
		}
	}
	
	function captcha(){
		$this->Captcha->show();
	}
	
	function thanks() {
		
	}
}
?>